package com.example.demo.suanfa_sort;

/**
 * @program: java_base
 * @description: 选择排序
 * @author: zhouhongtao
 * @happyCreateTime: 2022/03/06 10:54
 */
public class SelectSortDemo {


    /**
     * 选择排序：打扑克的时候，从左向右摆扑克
     * @param arr
     */
    public static void selectionSort(int[] arr) {
        if (arr == null || arr.length < 2) {
            return;
        }
        // 0 ~ N-1  找到最小值，在哪，放到0位置上
        // 1 ~ n-1  找到最小值，在哪，放到1 位置上
        // 2 ~ n-1  找到最小值，在哪，放到2 位置上
        for (int i = 0; i < arr.length; i++) {
            int minIndex = i;
            for (int j = i + 1; j < arr.length; j++) {
                // 在 i ~ n-1位置找最小值
                minIndex = arr[minIndex] < arr[j] ? minIndex : j;
            }
            swap(arr, i, minIndex);
        }
    }

    private static  void swap(int[] arr, int a, int b) {
        int i = arr[a];
        arr[a] = arr[b];
        arr[b] = i;
    }

}
